<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 23-11-2014 ; 23-02-2015
class Directivo extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los directivos activos o inactivos pero NO los borrados (-1)
	function consultar(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Cargo el modelo donde estan los datos de los directivos registrados para pedirle un listado con todos ellos
			$this->load->model('m_directivo');
			
			//Busco todos los directivos activos o inactivos, pero no los borrados.
			$listadoDirectivos = $this->m_directivo->buscar();
			
			//Le paso el listado de todos los directivos a la vista para que los muestre en una tabla
			$datos['directivos'] = $listadoDirectivos;
			
			//Cargo la vista donde se muestra la tabla de directivos y la guardo en una variable para pasarsela a la vista principal
			$datosPrincipal['vista'] = $this->load->view('v_directivos', $datos, true);
			
			//Cargo la vista principal con los datos de la vista recien generada
			$this->load->view('v_sistema', $datosPrincipal);
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar al directivo pasada por la url
	function eliminar($idDirectivo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Segunda comprobacion: Que idDirectivo pasado sea numerico y mayor que cero.
			if(is_numeric($idDirectivo) && $idDirectivo>0){
				//Cargo el modelo donde estan los datos de los directivos registrados
				$this->load->model('m_directivo');
				
				//Busco al directivo que hay que eliminar
				$directivo = $this->m_directivo->get($idDirectivo);
				
				//Tercera comprobacion: Que el directivo pasado por la url sea existente
				if($directivo->num_rows() == 1){
					//Elimino al directivo pasado por la url
					$respuesta = $this->m_directivo->eliminar($idDirectivo, $this->session->userdata('idUsuarioLog'));
					
					//Busco todos los directivos activos o inactivos, pero no los borrados que quedaron
					$listadoDirectivos = $this->m_directivo->buscar();
					
					//Le paso el listado de todos los directivos a la vista para que los muestre en una tabla
					$datos['directivos'] = $listadoDirectivos;
					
					//Cargo la vista donde se muestra la tabla de directivos
					$this->load->view('v_directivos', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
			
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de un directivo
	function modificar($idDirectivo=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el cargo y el estado del directivo a modificar. 
			//Ademas que se haya pasado por la url el id del directivo a modificar
			if(is_numeric($idDirectivo) && $idDirectivo>0 && is_numeric($this->input->post('cargoDirectivo',true)) && $this->input->post('cargoDirectivo',true)>0 && ($this->input->post('estadoDirectivo',true) == '1' || $this->input->post('estadoDirectivo',true) == '0')){		
				//Cargo el modelo donde estan los datos de los directivos
				$this->load->model('m_directivo');
				
				//Busco al directivo que hay que modificar
				$directivo = $this->m_directivo->get($idDirectivo);
				
				//Cargo el modelo donde estan los datos de los cargos directivos
				$this->load->model('m_cargo_directivo');
				
				//Busco al cargo directivo para comprobar que exista
				$cargoDirectivo = $this->m_cargo_directivo->get($this->input->post('cargoDirectivo',true));
				
				//Tercera comprobacion: Que el directivo pasado por la url sea existente. Lo mismo para el cargo.
				if($directivo->num_rows() == 1 && $cargoDirectivo->num_rows() == 1){
					//Modificamos el directivo
					$resultado = $this->m_directivo->modificar($idDirectivo, $this->input->post('cargoDirectivo',true), $this->input->post('estadoDirectivo',true));
								
					if($resultado == 1){										
						echo("<script> alert('El directivo se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('El directivo no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo crea un directivo si no existe y si existe, lo modifica.
	function actualizar($idPersona=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el cargo y el estado del directivo a crear o modificar.
			//Ademas que se haya pasado por la url el id de la persona a crear o modificar el directivo
			if(is_numeric($idPersona) && $idPersona>0 && is_numeric($this->input->post('cargoDirectivo',true)) && $this->input->post('cargoDirectivo',true)>0 && ($this->input->post('estadoDirectivo',true) == '1' || $this->input->post('estadoDirectivo',true) == '0')){		
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para corroborar que exista
				$persona = $this->m_persona->get($idPersona);
				
				//Cargo el modelo donde estan los datos de los cargos directivos
				$this->load->model('m_cargo_directivo');
				
				//Busco al cargo directivo para comprobar que exista
				$cargoDirectivo = $this->m_cargo_directivo->get($this->input->post('cargoDirectivo',true));
				
				//Tercera comprobacion: Que la persona pasada por la url sea existente. Lo mismo para el cargo
				if($persona->num_rows() == 1 && $cargoDirectivo->num_rows() == 1){
					//Cargo el modelo donde estan los datos de los directivos
					$this->load->model('m_directivo');
					
					//Busco al directivo para corroborar si existe o no
					$directivo = $this->m_directivo->get2($idPersona);
					
					//Cuarta comprobacion: Si la persona ya es directivo, modifico los datos, caso contrario, lo creo.
					//MISMA SITUACION QUE EN EL CASO DE USUARIOS, SOLO EL ELSE ES EJECUTADO. EL CASO NORMAL NUNCA SE EJECUTA.
					if($directivo->num_rows() == 1)
						//Modificamos el directivo
						$resultado = $this->m_directivo->modificar($directivo->row()->idDirectivo, $this->input->post('cargoDirectivo',true), $this->input->post('estadoDirectivo',true));
					else
						//Creamos el directivo
						$resultado = $this->m_directivo->crear($idPersona, $this->input->post('cargoDirectivo',true), $this->input->post('estadoDirectivo',true), $this->session->userdata('idUsuarioLog'));
					
					if($resultado == 1){										
						echo("<script> alert('El directivo se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('El directivo no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo se utiliza para que un usuario pueda visualizar los datos de los directivos de la institucion escolar
	//Ultima Verificación: 06-10-2014
	function visualizar(){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Cargo el modelo donde estan los datos de las instituciones
			$this->load->model('m_institucion');
			
			//Busco a la institucion que hay que visualizar
			$institucion = $this->m_institucion->get(1);
			
			//Le paso la institucion a visualizar a la vista
			$datos['institucion'] = $institucion;
			
			//Cargo el modelo donde estan los datos de los directivos
			$this->load->model('m_directivo');
			
			//Busco a los directivos activos de la institucion
			$listadoDirectivos = $this->m_directivo->buscarActivos();
			
			//Le paso los directivos activos a visualizar a la vista
			$datos['directivos'] = $listadoDirectivos;
			
			//Cargo la vista donde se visualiza los directivos de la institucion y la guardo en una variable para pasarsela a la vista principal
			$datosPrincipal['vista'] = $this->load->view('v_directivos_visualizar', $datos, true);
			
			//Cargo la vista principal con los datos de la vista para visualizar los directivos
			$this->load->view('v_sistema', $datosPrincipal);
		}else{
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
}